import time


def logger(msg):
    def time_master(func):
        def call_func():
            start = time.time()
            func()
            stop = time.time()
            print(f"[{msg}]一共耗费了{(stop - start):.2f}秒。")

        return call_func

    return time_master


# @logger(msg="方法a")
def fun_a():
    time.sleep(1)
    print("正在调用func_a...")


# 相当于下面的调用顺序
# 注意，如果直接调用，则需要把方法上的装饰器去掉，否则会打印重复

# 拿到 time_master 函数的引用
time_master_ref = logger(msg="方法a")

# 拿到 call_func 函数的引用,传入参数是 func_a 的引用
call_func_ref = time_master_ref(func=fun_a)

# 执行时间统计函数
call_func_ref()
